1. Field of the Invention
The invention relates generally to storage subsystems and more specifically relates to techniques for improving fault tolerance to read errors during I/O operations while initializing a new logical unit.
2. Related Patents
This patent is related to co-pending, commonly owned U.S. Pat. No. 6,931,499 issued 16 Aug. 2005, entitled METHOD AND APPARATUS FOR COPYING DATA BETWEEN STORAGE VOLUMES OF STORAGE SYSTEMS, incorporated herein by reference. This patent is also related to commonly owned U.S. Pat. No. 6,467,023, issued Oct. 15, 2002, entitled METHOD FOR LOGICAL UNIT CREATION WITH IMMEDIATE AVAILABILITY IN A RAID STORAGE ENVIRONMENT, incorporated herein by reference. This patent is also related to co-pending, commonly owned U.S. patent application Ser. No. 10/424,311, filed Apr. 28, 2003, publication number U.S. 2004/0215877, published Oct. 29, 2004, entitled METHODS AND STRUCTURE FOR RAPID BACKGROUND INITIALIZATION OF A RAID LOGICAL UNIT, incorporatcd herein by reference and also referred to here in as the “sibling” patent application.
3. Discussion of Related Art
As complexity of computing applications has evolved, so to have demands for reliability and speed in associated storage subsystems. In general, computing storage subsystems are used for storage and retrieval of programs and data associated with operation of various programs. The mission critical nature of some applications has led to corresponding demands for increased reliability in storage subsystems. Further, high-performance storage related applications, such as multimedia data capture and replay, have contributed to increased demands for performance on storage subsystems.
RAID (Redundant Array of Independent Disks) storage management techniques have been employed for some time to enhance both performance and reliability in such high-performance, high reliability storage applications. Striping techniques applied within RAID storage management distribute stored data over multiple independent disk drives thereby enhancing storage performance by distributing storage and retrieval operations over a plurality of disk drives operable in parallel. Redundancy techniques employed within RAID storage subsystems enhance reliability of the storage subsystem by generating and maintaining redundancy information associated with the user supplied data. The redundancy information ensures that failure of any single disk drive does not risk loss of data and, in some cases, allows the RAID storage subsystem to continue operation (though often in a degraded mode).
RAID storage management encompasses a number of storage management techniques for distributing data (striping) and for generating, maintaining, and distributing redundancy information over a plurality of drives. Each of these RAID management techniques is typically referred to as a “level” such as RAID level 0, RAID level 1, RAID level 5, etc. One common RAID storage management technique, often referred to as RAID level 5, distributes user data over a plurality of drives and associates therewith an additional portion of data (redundancy information) generated by use of XOR parity operations. A stripe of data consists of distributed portions of user data and the associated redundancy information. A volume or logical unit (LUN) comprises a plurality of such stripes distributed over a subset of disk drives in the storage subsystem.
Typically a RAID controller, often integrated within the storage subsystem, applies RAID storage management techniques to store and retrieve such stripes on the disk drives of the storage subsystem. The RAID storage controller hides from the host systems information relating to the specific locations of individual portions of data and hides information regarding generation and maintenance of the required redundancy information. To an attached host computing system, the RAID storage controller makes a volume or logical unit appear essentially as a single, highly reliable, high-performance, high-capacity disk drive. In general, the RAID storage controller provides a mapping function from logical addresses or locations specified in host I/O requests to physical storage locations corresponding to the striped information distributed over multiple disks.
In RAID level 5 storage management (as well as other forms of RAID storage management such as RAID levels 6) it is important that a newly defined storage volume be made “XOR consistent”. XOR consistency as used herein refers to the state of each stripe such that the data in the stripe and the associated redundancy information are consistent—i.e., the parity information corresponds to the associated data of the stripe. While RAID level 5 uses XOR parity, “XOR consistent” as used herein also refers to any redundancy information stored in the array of disk drives that make up a volume. For example, XOR consistent may also refer to the redundancy information used in RAID level 6 and the mirrored redundancy information used in RAID level 1. Therefore, although the problems presented herein are discussed in detail with respect to RAID level 5, similar problems are encountered in other RAID management levels where a new volume must be initialized to make the redundant information ready for use.
When a new volume is defined by allocating portions of storage capacity distributed over a plurality of drives, the volume may initially include random data leftover from previous utilization of the disk drives or generated from some other source. In general, the initial information on a newly defined storage volume will not be XOR consistent.
Various techniques are known to make a newly defined volume XOR consistent. A new solution addressed in the sibling patent application proposes to overlap I/O request processing with initialization of a new volume. So called read-modify-write and read-peer-write processing (discussed further herein below) is used to processing I/O requests overlapped with initialization of a volume. These processing techniques entail reading portions of a stripe to be updated in response to an I/O write request overlapping volume initialization. The read portions and the new data are applied to generate updated parity information. The new data and updated parity information are then written to the disk drives of the system.
Problems arise in using such processing techniques if certain errors occur during volume initialization. Most present storage systems are unable to recover from an error during the read portion of a read-modify-write or read-peer-write process performed during initialization of a volume. Present techniques simply disable the volume on which the error occurred if the read error occurs during the initialization process. Disabling the volume may require administrative intervention to permit continued operation of the volume. Such interruption of service of the storage system may be undesirable in a number of applications.
It is evident from the above discussion that an ongoing problem exists in making a newly defined RAID volume available for host I/O request processing as soon as possible while maintaining tolerance of faults.